<!doctype html>
<html lang="en-us">
<head>

    <meta charset="utf-8">
    <meta name="generator" content="Hugo 0.59.1" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>springMVC请求参数的绑定 | 林贤钦</title>
    <meta property="og:title" content="springMVC请求参数的绑定 - 林贤钦">
    <meta property="og:type" content="article">
        
    <meta property="article:published_time" content="2019-07-28T21:04:58&#43;08:00">
        
        
    <meta property="article:modified_time" content="2019-07-28T21:04:58&#43;08:00">
        
    <meta name="Keywords" content="java,博客,项目管理,软件架构,公众号,小程序">
    <meta name="description" content="springMVC请求参数的绑定">
        
    <meta name="author" content="林贤钦">
    <meta property="og:url" content="http://linxianqin.gitee.io/post/springMVC%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E7%9A%84%E7%BB%91%E5%AE%9A/">
    <link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">

    <link rel="stylesheet" href="/css/normalize.css">
    
        <link rel="stylesheet" href="/css/prism.css">
    
    <link rel="stylesheet" href="/css/style.css">
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    


    
    
</head>

<body>
<header id="header" class="clearfix">
	<div class="container">
        <div class="col-group">
            <div class="site-name ">
                
                    <a id="logo" href="http://linxianqin.gitee.io">
                        林贤钦
                    </a>
                
                <p class="description">专注于Java、微信小程序、移动互联网、项目管理、软件架构</p>
            </div>
            <div>
                <nav id="nav-menu" class="clearfix">
                    <a class="current" href="http://linxianqin.gitee.io">首页</a>
                    
                    <a  href="http://linxianqin.gitee.io/archives/" title="归档">归档</a>
                    
                    <a  href="http://linxianqin.gitee.io/about/" title="关于">关于</a>
                    
                </nav>
            </div>
        </div>
    </div>
</header>


<div id="body">
        
        
    <div class="container">
        <div class="col-group">

            <div class="col-8" id="main">
                <div class="res-cons">
                    <article class="post">
                        <header>
                            <h1 class="post-title">springMVC请求参数的绑定</h1>
                        </header>
                        <date class="post-meta meta-date">
                            2019年7月28日
                        </date>
                        
                        <div class="post-meta">
                            <span>|</span>
                            
                                <span class="meta-category"><a href="http://linxianqin.gitee.io/categories/java">java</a></span>
                            
                        </div>
                        
                        
                        <div class="post-meta">
                            <span id="busuanzi_container_page_pv">|<span id="busuanzi_value_page_pv"></span><span> 阅读</span></span>
                        </div>
                        
                        
                        <div class="post-content">
							<nav id="TableOfContents">
<ul>
<li>
<ul>
<li>
<ul>
<li><a href="#1-绑定的机制">1 绑定的机制</a>
<ul>
<li>
<ul>
<li><a href="#1-1-我们都知道-表单中请求参数都是基于-key-value-的">1.1 我们都知道，表单中请求参数都是基于 key=value 的。</a></li>
</ul></li>
</ul></li>
<li><a href="#2-支持的数据类型">2 支持的数据类型：</a>
<ul>
<li>
<ul>
<li><a href="#2-1-基本类型参数">2.1 基本类型参数：</a></li>
<li><a href="#2-2-pojo-类型参数">2.2 POJO 类型参数：</a></li>
<li><a href="#springmvc-绑定请求参数是自动实现的-但是要想使用-必须遵循使用要求">SpringMVC 绑定请求参数是自动实现的，但是要想使用，必须遵循使用要求。</a></li>
</ul></li>
</ul></li>
<li><a href="#3-使用要求">3 使用要求：</a>
<ul>
<li>
<ul>
<li><a href="#3-1-如果是基本类型或者-string-类型">3.1 如果是基本类型或者 String 类型：</a></li>
<li><a href="#3-2-如果是-pojo-类型-或者它的关联对象">3.2 如果是 POJO 类型，或者它的关联对象：</a></li>
<li><a href="#3-3-如果是集合类型-有两种方式">3.3 如果是集合类型,有两种方式：</a></li>
<li><a href="#注意-它还可以实现一些数据类型自动转换">注意:它还可以实现一些数据类型自动转换。</a></li>
</ul></li>
</ul></li>
<li><a href="#4-使用示例">4 使用示例</a>
<ul>
<li>
<ul>
<li><a href="#4-1-基本类型和-string-类型作为参数">4.1 基本类型和 String 类型作为参数</a></li>
<li><a href="#4-2-pojo-类型作为参数">4.2 POJO 类型作为参数</a></li>
<li><a href="#4-3-pojo-类中包含集合类型参数">4.3 POJO 类中包含集合类型参数</a></li>
<li><a href="#4-4-请求参数乱码问题">4.4 请求参数乱码问题</a>
<ul>
<li><a href="#4-5-在-springmvc-的配置文件中可以配置-静态资源不过滤">4.5 在 springmvc 的配置文件中可以配置，静态资源不过滤：</a></li>
</ul></li>
</ul></li>
</ul></li>
</ul></li>
</ul></li>
</ul>
</nav>
                            

<h3 id="1-绑定的机制">1 绑定的机制</h3>

<h5 id="1-1-我们都知道-表单中请求参数都是基于-key-value-的">1.1 我们都知道，表单中请求参数都是基于 key=value 的。</h5>

<p>SpringMVC 绑定请求参数的过程是通过把表单提交请求参数，作为控制器中方法参数进行绑定的。</p>

<pre><code class="language-html">&lt;a href=&quot;account/findAccount?accountId=10&quot;&gt;查询账户&lt;/a&gt;
</code></pre>

<p>中请求参数是：
    accountId=10</p>

<pre><code class="language-java">/**
* 查询账户
* @return
*/
@RequestMapping(&quot;/findAccount&quot;)
public String findAccount(Integer accountId) {
	System.out.println(&quot;查询了账户。。。。&quot;+accountId);
	return &quot;success&quot;; 
}
</code></pre>

<h3 id="2-支持的数据类型">2 支持的数据类型：</h3>

<h5 id="2-1-基本类型参数">2.1 基本类型参数：</h5>

<pre><code>    包括基本类型和 String 类型
</code></pre>

<h5 id="2-2-pojo-类型参数">2.2 POJO 类型参数：</h5>

<pre><code>    包括实体类，以及关联的实体类
    数组和集合类型参数：
    包括 List 结构和 Map 结构的集合（包括数组）
</code></pre>

<h5 id="springmvc-绑定请求参数是自动实现的-但是要想使用-必须遵循使用要求">SpringMVC 绑定请求参数是自动实现的，但是要想使用，必须遵循使用要求。</h5>

<h3 id="3-使用要求">3 使用要求：</h3>

<h5 id="3-1-如果是基本类型或者-string-类型">3.1 如果是基本类型或者 String 类型：</h5>

<pre><code>要求我们的参数名称必须和控制器中方法的形参名称保持一致。(严格区分大小写)
</code></pre>

<h5 id="3-2-如果是-pojo-类型-或者它的关联对象">3.2 如果是 POJO 类型，或者它的关联对象：</h5>

<pre><code>要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是 POJO 类型。
</code></pre>

<h5 id="3-3-如果是集合类型-有两种方式">3.3 如果是集合类型,有两种方式：</h5>

<pre><code>第一种：
    要求集合类型的请求参数必须在 POJO 中。在表单中请求参数名称要和 POJO 中集合属性名称相同。
    给 List 集合中的元素赋值，使用下标。
    给 Map 集合中的元素赋值，使用键值对。
第二种：
    接收的请求参数是 json 格式数据。需要借助一个注解实现。
</code></pre>

<h5 id="注意-它还可以实现一些数据类型自动转换">注意:它还可以实现一些数据类型自动转换。</h5>

<pre><code>内置转换器全都在：
</code></pre>

<pre><code class="language-java">org.springframework.core.convert.support 包下。有：
java.lang.Boolean -&gt; java.lang.String : ObjectToStringConverter
java.lang.Character -&gt; java.lang.Number : CharacterToNumberFactory
java.lang.Character -&gt; java.lang.String : ObjectToStringConverter
java.lang.Enum -&gt; java.lang.String : EnumToStringConverter
java.lang.Number -&gt; java.lang.Character : NumberToCharacterConverter
java.lang.Number -&gt; java.lang.Number : NumberToNumberConverterFactory
java.lang.Number -&gt; java.lang.String : ObjectToStringConverter
java.lang.String -&gt; java.lang.Boolean : StringToBooleanConverter
java.lang.String -&gt; java.lang.Character : StringToCharacterConverter
java.lang.String -&gt; java.lang.Enum : StringToEnumConverterFactory
java.lang.String -&gt; java.lang.Number : StringToNumberConverterFactory
java.lang.String -&gt; java.util.Locale : StringToLocaleConverter
java.lang.String -&gt; java.util.Properties : StringToPropertiesConverter
java.lang.String -&gt; java.util.UUID : StringToUUIDConverter
java.util.Locale -&gt; java.lang.String : ObjectToStringConverter
java.util.Properties -&gt; java.lang.String : PropertiesToStringConverter
java.util.UUID -&gt; java.lang.String : ObjectToStringConverter
</code></pre>

<h3 id="4-使用示例">4 使用示例</h3>

<h5 id="4-1-基本类型和-string-类型作为参数">4.1 基本类型和 String 类型作为参数</h5>

<p>jsp 代码：</p>

<pre><code class="language-html">&lt;!-- 基本类型示例 --&gt; 
&lt;a href=&quot;account/findAccount?accountId=10&amp;accountName=zhangsan&quot;&gt;查询账户&lt;/a&gt;
</code></pre>

<p>控制器代码：</p>

<pre><code class="language-java">/**
* 查询账户
* @return
*/
@RequestMapping(&quot;/findAccount&quot;)
public String findAccount(Integer accountId,String accountName) {
	System.out.println(&quot;查询了账户。。。。&quot;+accountId+&quot;,&quot;+accountName);
	return &quot;success&quot;;
 }

</code></pre>

<h5 id="4-2-pojo-类型作为参数">4.2 POJO 类型作为参数</h5>

<p>实体类代码：</p>

<pre><code class="language-java">/**
* 账户信息
*/
public class Account implements Serializable {
	private Integer id;
	private String name;
	private Float money;
	private Address address;
	//getters and setters
}
/**
* 地址的实体类
*/
public class Address implements Serializable {
	private String provinceName;
	private String cityName;
	//getters and setters
}
</code></pre>

<p>jsp 代码：</p>

<pre><code class="language-html">&lt;!-- pojo 类型演示 --&gt;
&lt;form action=&quot;account/saveAccount&quot; method=&quot;post&quot;&gt;
	账户名称：&lt;input type=&quot;text&quot; name=&quot;name&quot; &gt;&lt;br/&gt;
	账户金额：&lt;input type=&quot;text&quot; name=&quot;money&quot; &gt;&lt;br/&gt;
	账户省份：&lt;input type=&quot;text&quot; name=&quot;address.provinceName&quot; &gt;&lt;br/&gt;
	账户城市：&lt;input type=&quot;text&quot; name=&quot;address.cityName&quot; &gt;&lt;br/&gt;
	&lt;input type=&quot;submit&quot; value=&quot;保存&quot;&gt;
&lt;/form&gt;
</code></pre>

<p>控制器代码：</p>

<pre><code class="language-java">/**
* 保存账户
* @param account
* @return
*/
@RequestMapping(&quot;/saveAccount&quot;)
public String saveAccount(Account account) {
	System.out.println(&quot;保存了账户。。。。&quot;+account);
	return &quot;success&quot;; 
}
</code></pre>

<h5 id="4-3-pojo-类中包含集合类型参数">4.3 POJO 类中包含集合类型参数</h5>

<p>实体类代码：</p>

<pre><code class="language-java">/**
* 用户实体类
*/
public class User implements Serializable {
	private String username;
	private String password;
	private Integer age;
	private List&lt;Account&gt; accounts;
	private Map&lt;String,Account&gt; accountMap;
	//getters and setters
	@Override
	public String toString() {
		return &quot;User [username=&quot; + username + &quot;, password=&quot; + password + &quot;, age=&quot;
		+ age + &quot;,\n accounts=&quot; + accounts
		+ &quot;,\n accountMap=&quot; + accountMap + &quot;]&quot;;
	} 
}

</code></pre>

<p>jsp 代码：</p>

<pre><code class="language-html">&lt;!-- POJO 类包含集合类型演示 --&gt; 
&lt;form action=&quot;account/updateAccount&quot; method=&quot;post&quot;&gt;
	用户名称：&lt;input type=&quot;text&quot; name=&quot;username&quot; &gt;&lt;br/&gt;
	用户密码：&lt;input type=&quot;password&quot; name=&quot;password&quot; &gt;&lt;br/&gt;
	用户年龄：&lt;input type=&quot;text&quot; name=&quot;age&quot; &gt;&lt;br/&gt;
	账户 1 名称：&lt;input type=&quot;text&quot; name=&quot;accounts[0].name&quot; &gt;&lt;br/&gt;
	账户 1 金额：&lt;input type=&quot;text&quot; name=&quot;accounts[0].money&quot; &gt;&lt;br/&gt;
	账户 2 名称：&lt;input type=&quot;text&quot; name=&quot;accounts[1].name&quot; &gt;&lt;br/&gt;
	账户 2 金额：&lt;input type=&quot;text&quot; name=&quot;accounts[1].money&quot; &gt;&lt;br/&gt;
	账户 3 名称：&lt;input type=&quot;text&quot; name=&quot;accountMap['one'].name&quot; &gt;&lt;br/&gt;
	账户 3 金额：&lt;input type=&quot;text&quot; name=&quot;accountMap['one'].money&quot; &gt;&lt;br/&gt;
	账户 4 名称：&lt;input type=&quot;text&quot; name=&quot;accountMap['two'].name&quot; &gt;&lt;br/&gt;
	账户 4 金额：&lt;input type=&quot;text&quot; name=&quot;accountMap['two'].money&quot; &gt;&lt;br/&gt;
	&lt;input type=&quot;submit&quot; value=&quot;保存&quot;&gt;
&lt;/form&gt;

</code></pre>

<p>控制器代码：</p>

<pre><code class="language-java">/**
* 更新账户
* @return
*/
@RequestMapping(&quot;/updateAccount&quot;)
public String updateAccount(User user) {
	System.out.println(&quot;更新了账户。。。。&quot;+user);
	return &quot;success&quot;;
 }

</code></pre>

<h5 id="4-4-请求参数乱码问题">4.4 请求参数乱码问题</h5>

<p>post 请求方式：
在 web.xml 中配置一个过滤器</p>

<pre><code class="language-xml">&lt;!-- 配置 springMVC 编码过滤器 --&gt;
&lt;filter&gt; 
	&lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt; 
	&lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt;
	&lt;!-- 设置过滤器中的属性值 --&gt; 
	&lt;init-param&gt; 
		&lt;param-name&gt;encoding&lt;/param-name&gt; 
		&lt;param-value&gt;UTF-8&lt;/param-value&gt;
	&lt;/init-param&gt;
	&lt;!-- 启动过滤器 --&gt;
	&lt;init-param&gt; 
		&lt;param-name&gt;forceEncoding&lt;/param-name&gt;
		&lt;param-value&gt;true&lt;/param-value&gt;
	&lt;/init-param&gt;
&lt;/filter&gt;
&lt;!-- 过滤所有请求 --&gt; 
&lt;filter-mapping&gt;
	&lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt; 
	&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
</code></pre>

<h6 id="4-5-在-springmvc-的配置文件中可以配置-静态资源不过滤">4.5 在 springmvc 的配置文件中可以配置，静态资源不过滤：</h6>

<pre><code class="language-xml">&lt;!-- location 表示路径，mapping 表示文件，**表示该目录下的文件以及子目录的文件 --&gt;
&lt;mvc:resources location=&quot;/css/&quot; mapping=&quot;/css/**&quot;/&gt;
&lt;mvc:resources location=&quot;/images/&quot; mapping=&quot;/images/**&quot;/&gt;
&lt;mvc:resources location=&quot;/scripts/&quot; mapping=&quot;/javascript/**&quot;/&gt;
</code></pre>

<p>get 请求方式：
tomacat 对 GET 和 POST 请求处理方式是不同的，GET 请求的编码问题，要改 tomcat 的 server.xml
配置文件，如下：</p>

<pre><code class="language-xml">&lt;Connector connectionTimeout=&quot;20000&quot; port=&quot;8080&quot;
protocol=&quot;HTTP/1.1&quot; redirectPort=&quot;8443&quot;/&gt;
</code></pre>

<p>改为：</p>

<pre><code class="language-xml">&lt;Connector connectionTimeout=&quot;20000&quot; port=&quot;8080&quot;
protocol=&quot;HTTP/1.1&quot; redirectPort=&quot;8443&quot;
useBodyEncodingForURI=&quot;true&quot;/&gt;
</code></pre>

<p>如果遇到 ajax 请求仍然乱码，把：</p>

<pre><code>useBodyEncodingForURI=&quot;true&quot;改为 URIEncoding=&quot;UTF-8&quot;
</code></pre>

                        </div>
						 
                        
<div class="post-archive">
    <ul class="post-copyright">
        <li><strong>原文作者：</strong><a rel="author" href="http://linxianqin.gitee.io">林贤钦</a></li>
        <li style="word-break:break-all"><strong>原文链接：</strong><a href="http://linxianqin.gitee.io/post/springMVC%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E7%9A%84%E7%BB%91%E5%AE%9A/">http://linxianqin.gitee.io/post/springMVC%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E7%9A%84%E7%BB%91%E5%AE%9A/</a></li>
        <li><strong>版权声明：</strong>本作品采用<a rel="license" href="https://linxianqin.gitee.io">知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议</a>进行许可，非商业转载请注明出处（作者，原文链接），商业转载请联系作者获得授权。</li>
    </ul>
</div>
<br/>



                        

<div class="post-archive">
    <h2>See Also</h2>
    <ul class="listing">
        
        <li><a href="/archives/"></a></li>
        
        <li><a href="/about/">关于我的</a></li>
        
    </ul>
</div>


                        <div class="post-meta meta-tags">
                            
                            <ul class="clearfix">
                                
                                <li><a href="http://linxianqin.gitee.io/tags/ssm">ssm</a></li>
                                
                            </ul>
                            
                        </div>
                    </article>
                    
    

    
    
    <div class="post bg-white">
      <script src="https://utteranc.es/client.js"
            repo= "757610938/hugo-blogs-utterances"
            issue-term="pathname"
            theme="github-light"
            crossorigin="anonymous"
            async>
      </script>
    </div>
    
                </div>
            </div>
            <div id="secondary">
    <section class="widget">
        <form id="search" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank" _lpchecked="1">
      
      <input type="text" name="q" maxlength="20" placeholder="Search">
      <input type="hidden" name="sitesearch" value="http://linxianqin.gitee.io">
      <button type="submit" class="submit icon-search"></button>
</form>
    </section>
    
    <section class="widget">
        <h3 class="widget-title">最近文章</h3>
<ul class="widget-list">
    
    <li>
        <a href="http://linxianqin.gitee.io/post/java-%E5%8F%8D%E5%B0%84/" title="Java 反射">Java 反射</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/java-%E9%93%BE%E8%A1%A8/" title="Java 链表">Java 链表</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E7%9F%AD%E4%BF%A1%E6%B3%A8%E5%86%8C%E5%92%8C%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95%E7%9A%84%E5%AE%9E%E7%8E%B0/" title="短信注册和微信登录的实现">短信注册和微信登录的实现</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/OAuth2.0%E8%AE%A4%E8%AF%81%E6%8E%88%E6%9D%83%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95/" title="OAuth2.0认证授权单点登录">OAuth2.0认证授权单点登录</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/Nacos%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/" title="Nacos服务注册中心">Nacos服务注册中心</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/SpringCloud%E5%BE%AE%E6%9C%8D%E5%8A%A1/" title="SpringCloud微服务">SpringCloud微服务</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%BF%E9%87%8C%E4%BA%91%E8%A7%86%E9%A2%91%E7%82%B9%E6%92%AD%E6%9C%8D%E5%8A%A1/" title="阿里云视频点播服务前后端实现">阿里云视频点播服务前后端实现</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%9F%E5%88%97/" title="队列">队列</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E7%A8%80%E7%96%8F%E6%95%B0%E7%BB%84/" title="稀疏数组">稀疏数组</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%BF%E9%87%8C%E4%BA%91EasyExcel%E5%AE%9E%E7%8E%B0%E5%90%8E%E7%AB%AF%E5%AF%B9Excel%E7%9A%84%E8%AF%BB%E5%86%99%E6%93%8D%E4%BD%9C/" title="使用阿里云EasyExcel实现后端对Excel的读写操作">使用阿里云EasyExcel实现后端对Excel的读写操作</a>
    </li>
    
</ul>
    </section>

    

    <section class="widget">
        <h3 class="widget-title">分类</h3>
<ul class="widget-list">
    
    <li><a href="http://linxianqin.gitee.io/categories/JWT/">JWT (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/hugo/">hugo (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/java/">java (18)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/java8/">java8 (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/springCloud/">springCloud (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/springSecurity/">springSecurity (4)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/vue/">vue (5)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/yml/">yml (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">数据结构 (3)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/">软件测试 (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E9%98%BF%E9%87%8C%E4%BA%91/">阿里云 (4)</a></li>
    
</ul>
    </section>

    <section class="widget">
        <h3 class="widget-title">标签</h3>
<div class="tagcloud">
    
    <a href="http://linxianqin.gitee.io/tags/JWT/">JWT</a>
    
    <a href="http://linxianqin.gitee.io/tags/hugo/">hugo</a>
    
    <a href="http://linxianqin.gitee.io/tags/java/">java</a>
    
    <a href="http://linxianqin.gitee.io/tags/java8/">java8</a>
    
    <a href="http://linxianqin.gitee.io/tags/spring/">spring</a>
    
    <a href="http://linxianqin.gitee.io/tags/springBoot/">springBoot</a>
    
    <a href="http://linxianqin.gitee.io/tags/springCloud/">springCloud</a>
    
    <a href="http://linxianqin.gitee.io/tags/ssm/">ssm</a>
    
    <a href="http://linxianqin.gitee.io/tags/vue/">vue</a>
    
    <a href="http://linxianqin.gitee.io/tags/yml/">yml</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">数据结构</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/">软件测试</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E9%98%BF%E9%87%8C%E4%BA%91/">阿里云</a>
    
</div>
    </section>

    
<section class="widget">
    <h3 class="widget-title">友情链接</h3>
    <ul class="widget-list">
        
        <li>
            <a target="_blank" href="https://www.cnki.net" title="中国知网">中国知网</a>
        </li>
        
        <li>
            <a target="_blank" href="https://linxianqin.com" title="个人的另一个博客网站(国内加载慢)">个人的另一个博客网站(国内加载慢)</a>
        </li>
        
    </ul>
</section>


    <section class="widget">
        <h3 class="widget-title">其它</h3>
        <ul class="widget-list">
            <li><a href="http://linxianqin.gitee.io/index.xml">文章 RSS</a></li>
        </ul>
    </section>
</div>
        </div>
    </div>
</div>
<footer id="footer">
    <div class="container">
        &copy; 2020 <a href="http://linxianqin.gitee.io">林贤钦 By 林贤钦</a>.
        Powered by <a rel="nofollow noreferer noopener" href="https://gohugo.io" target="_blank">Hugo</a>.
        <a href="https://www.flysnow.org/" target="_blank">Theme</a> based on <a href="https://github.com/rujews/maupassant-hugo" target="_blank">maupassant</a>.
        
    </div>
</footer>


    
    <script type="text/javascript">
        
        (function () {
            $("pre code").parent().addClass("line-numbers")
        }());

        window.MathJax = {
            tex2jax: {
                inlineMath: [['$', '$']],
                processEscapes: true
                }
            };
    </script>
    <script type="text/javascript" src="/js/prism.js" async="true"></script>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script>


<a id="rocket" href="#top"></a>
<script type="text/javascript" src="/js/totop.js?v=0.0.0" async=""></script>

<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
	window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
	ga('create', 'GA ID', 'auto');
	
	ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>



    <script type="text/javascript" src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script>




</body>
</html>
